

//data.js

import mysql from 'mysql2/promise';

export let mockUsers = [];  // 存储账号密码（id, username, password）
export let dataArray = [];  // 存储基础信息（id, name, age）

// 数据库配置  模拟环境
/*



*/
const dbConfig = {
  host: 'localhost',
  user: 'root', // 你的 MySQL 用户名
  password: '123456', // 你的 MySQL 密码
  database: 'my_test_db' // 数据库名
};




// 数据库配置  生产环境  宝塔服务面板远程MySQL
/**
 const dbConfig = {
  host: '127.0.0.1', // 替换为完整的本地IP
  user: 'my_test_db',
  password: '这里没有',
  database: 'my_test_db'
};


 */


export async function query(sql, params = []) {
  const connection = await mysql.createConnection(dbConfig);
  try {
    const [rows] = await connection.execute(sql, params);
    return rows;
  } finally {
    await connection.end();
  }
}




/**
 * 从 MySQL 数据库读取用户基础信息 (id, names, age)，存入 dataArray（过滤 null）
 */
export async function readUserDataFromDB() {
  const connection = await mysql.createConnection(dbConfig);
  try {
    const [rows] = await connection.execute('SELECT id, names AS name, age FROM users'); // ASC升序，DESC降序
    // 过滤：name 或 age 为 null 的数据（根据业务，保留两者都有效的记录）
    const readUD = rows.filter(item =>
      item.name !== null && item.age !== null
    );
    // 3. 升序排序（确保有效记录的原始顺序）
    readUD.sort((a, b) => a.id - b.id);

    const reindexedUsers = readUD.map((UD, index) => ({
      ...UD,         // 保留 username、password 等字段
      id: index + 1    // 新 id = 索引 + 1（从1开始）
    }));
    dataArray = reindexedUsers

    console.log('从数据库读取并过滤完成：用户基础信息（dataArray）：', dataArray);


    return { dataArray }; // 关键：返回重新编号后的数组

  } catch (err) {
    console.error('读取用户基础信息失败：', err);
  } finally {
    await connection.end();
  }
}

/**
 * 从 MySQL 数据库读取账号密码 (id, username, password)，存入 mockUsers（过滤 null）
 */
async function readUserAccountDataFromDB() {
  const connection = await mysql.createConnection(dbConfig);
  try {
    // 1. 读取数据库中的 id、username、password
    const [rows] = await connection.execute('SELECT id, username, password FROM users');
    // 2. 筛选有效记录：仅保留 username 和 password 都不为 null 的数据
    const validUsers = rows.filter(item =>
      item.username !== null && item.password !== null
    );
    // 3. 按数据库原始 id 升序排序（确保有效记录的原始顺序）
    validUsers.sort((a, b) => a.id - b.id);
    // 4. 重新编号：有效记录的 id 从1开始连续递增，覆盖原数据库 id
    const reindexedUsers = validUsers.map((user, index) => ({
      ...user,         // 保留 username、password 等字段
      id: index + 1    // 新 id = 索引 + 1（从1开始）
    }));
    // 5. 替换 mockUsers 为重新编号后的数组
    mockUsers = reindexedUsers;
    // 日志输出结果
    if (mockUsers.length > 0) {
      console.log(`有效记录已重新编号（共 ${mockUsers.length} 条），id从1开始`);
      console.log('处理后的数据：', mockUsers);
    } else {
      console.log('无有效记录，mockUsers 为空');
    }
  } catch (err) {
    console.error('读取并处理账号密码失败：', err);
    mockUsers = [];
  } finally {
    await connection.end();
  }
}











/**
 * 主函数：从数据库读取数据
 */
async function readDataFromDB() {
  try {
    await readUserDataFromDB();
    await readUserAccountDataFromDB();
  } catch (err) {
    console.error('从数据库读取数据失败：', err);
  }
}



class UserDataFn {
  async readUD() {

  }
}



export let DataFn = new UserDataFn()

















// 执行从数据库读取数据的函数
readDataFromDB();